# 创建一个下载美女图片的方法

# import urllib.request,parse
from urllib import request, parse
import gevent
import gevent.monkey

gevent.monkey.patch_all()  # 把所有的耗时转化成gevent的函数

import re


def read_img():
	# 抓取网页内容-发送报头-1
	url = "https://www.douyu.com/directory/game/yz"
	send_headers = {
		'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0'
	}

	# 发送请求 第一个是请求的地址,第二个请求的头,第三个是请求的方式
	req = request.Request(url=url, headers=send_headers, method="GET")

	response = request.urlopen(req)
	content = response.read().decode("utf-8")

	print(content)
	# 正则
	reg = r'data-original="(https://.+\.jpg)"'  # 定义一个正则来匹配页面当中的图片

	imglist = re.findall(reg, content)  # 找到所有匹配到的图片地址

	return imglist


def write_img(file_name, image_url):
	"""读取图片内容"""
	# 读取所有图片
	# req = request.urlopen(image_url)
	# content = req.read()

	send_headers = {
		'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0'
	}

	# 发送请求 第一个是请求的地址,第二个请求的头,第三个是请求的方式
	req = request.Request(url=image_url, headers=send_headers, method="GET")

	response = request.urlopen(req)
	content = response.read()

	# 写到文件中
	with open("./images/%s.jpg" % file_name, 'wb') as f:
		f.write(content)


def main():
	# 读取图片的地址到一个图片列表中
	images = read_img()

	# 协程的列表
	spawns = list()

	num = 0
	for image_url in images:
		spawns.append(gevent.spawn(write_img, num, image_url))
		num += 1

	# 使用协程进行数据抓取
	gevent.joinall(spawns)


if __name__ == '__main__':
	main()
